package pe.edu.upc.dew.grupo04.dao;

import java.util.List;

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

import pe.edu.upc.dew.grupo04.dao.UsuarioDao;
import pe.edu.upc.dew.grupo04.model.Usuario;

public class UsuarioDaoJdbc extends SimpleJdbcDaoSupport implements UsuarioDao {

	public void crearUsuario(Usuario usuario) {
		getSimpleJdbcTemplate().update(
				"insert into usuario(codUsuario,nombre,apellido,edad,email,telefono,dni,cargo,username,password)"
						+ " values(?,?,?,?,?,?,?,?,?,?)", usuario.getCodUsuario(),
				usuario.getNombre(), usuario.getApellido(), usuario.getEdad(),
				usuario.getEmail(), usuario.getTelefono(), usuario.getDni(),
				usuario.getCargo(), usuario.getUsername(), usuario.getPassword());
	}

	public Usuario getUsuarioPorCodigo(int codUsuario) {
		return getSimpleJdbcTemplate().queryForObject(
				"select * from usuario where codUsuario=?",
				new BeanPropertyRowMapper<Usuario>(Usuario.class), codUsuario);
	}

	public List<Usuario> getUsuarios() {
		return getSimpleJdbcTemplate().query("select * from usuario",
				new BeanPropertyRowMapper<Usuario>(Usuario.class));
	}

	public void updateUsuario(Usuario usuario) {
		getSimpleJdbcTemplate()
				.update("update usuario set nombre=?,apellido=?,edad=?,email=?,telefono=?,dni=?,cargo=?,username=?,password=? where "
						+ "codUsuario=?", usuario.getNombre(),
						usuario.getApellido(), usuario.getEdad(),
						usuario.getEmail(), usuario.getTelefono(),
						usuario.getDni(), usuario.getCargo(),usuario.getUsername(),usuario.getPassword(),
						usuario.getCodUsuario());
	}

	public void eliminarUsuario(int codUsuario) {
		getSimpleJdbcTemplate().update("delete from usuario where codUsuario=?",
				codUsuario);
	}
	
	public Usuario getUsuarioPorUsername(String username) {
		return getSimpleJdbcTemplate().queryForObject(
				"select username, password from usuario where username= ?",
				new BeanPropertyRowMapper<Usuario>(Usuario.class), username);
	}
}